package com.wg.springboot.guawa.map;

import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

import java.util.Map;
import java.util.Set;
import java.util.function.Function;

/**
 * 2021年10月9日15:07:53
 * wugang
 */
public class BasedTable {
//    String computeIfAbsent(Integer key, Function<? super Integer, ? extends String> mappingFunction) {
//        System.out.println(1);
//    }
    public static void main(String[] args) {
        Table<Integer, Integer, Integer> table = HashBasedTable.<Integer, Integer, Integer>create();
        table.put(1, 2, 3);
        table.put(1, 2, 3);
        table.put(1, 2, 4);
        table.put(1, 2, 5);
        table.put(1, 3, 3);
        table.put(4, 5, 6);
        System.out.println(table);//{1={2=5, 3=3}, 4={5=6}}  当第一位和第二位都重复 则只放入最后放入的第三位
//        判断是否包含二位点数  二维点数指第二三个数  第一位相同二维点数重复则覆盖 {1={2=3, 3=3}, 4={5=6}}
        if (table.contains(2, 3)) {   //包含则不执行
            table.put(7, 8, 9);
        }
        System.out.println(table);
        Map<Integer, Integer> column = table.column(5);//第二个数字称其为column列   {4=6}  获取其集合
        System.out.println(column);
//        rowkey表示第一个数字  row表示行
        Map<Integer, Integer> row = table.row(1);
        System.out.println(row); //{2=5, 3=3}
//        获取row=4  column=5
        Integer integer = table.get(4, 5);
        System.out.println(integer);//6
//        判断是否包涵啊
        boolean b = table.containsColumn(5);
        boolean b1 = table.containsValue(6); //是否包含value值为6
//        将map转为map套map形式、
        Map<Integer, Map<Integer, Integer>> integerMapMap = table.rowMap();
        System.out.println("map套map："+integerMapMap);
//        获取所有的rowkey值的集合   set集合就相当于一个数组
        Set<Integer> integers = table.rowKeySet();
        System.out.println("set集合"+integers);
        table.put(11,12,13);
//        删除row和column的集合  并且返回该集合的值
        Integer remove = table.remove(11, 12);
        System.out.println(remove);
//        清空集合
//        table.clear();
        System.out.println(table);

    }
}
